home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 3 / BBS in a box - Trilogy III.iso / Files / Prog / U-Z / VideoToolBox Folder / Utilities / Quick3 / SortAndMergeContrasts.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-02-23  |  1.0 KB  |  38 lines  |  [TEXT/KAHL]

  1. /*
  2. SortAndMergeContrasts.c
  3. HISTORY:
  4. 8/24/91    dgp    Added typedef and cast to make it compatible with THINK C 5.0.
  5. 1/25/93 dgp removed obsolete support for THINK C 4.
  6. */
  7. #include "Quick3.h"
  8.  
  9. typedef int (*qsort_cmp_func)(const void *,const void *);
  10.  
  11. static int CompareContrasts(contrastRecord *c1,contrastRecord *c2);
  12.  
  13. void SortAndMergeContrasts(dataRecord *dataPtr)
  14. {
  15.     int i,j;
  16.     
  17.     /* Sort the contrastRecords in order of increasing contrast. */
  18.     qsort(dataPtr->c,dataPtr->contrasts,sizeof(contrastRecord)
  19.         ,(qsort_cmp_func)&CompareContrasts);
  20.     
  21.     /* Merge records at equal contrast. */
  22.     i=j=0;
  23.     for(i=0;i<dataPtr->contrasts-1;i++){
  24.         if(dataPtr->c[i].contrast==dataPtr->c[i+1].contrast){
  25.             dataPtr->c[i].trials += dataPtr->c[i+1].trials;
  26.             dataPtr->c[i].correct += dataPtr->c[i+1].correct;
  27.             for(j=i+1;j<dataPtr->contrasts-1;j++) dataPtr->c[j]=dataPtr->c[j+1];
  28.             dataPtr->contrasts--;
  29.         }
  30.     }
  31. }
  32.  
  33. static int CompareContrasts(contrastRecord *c1,contrastRecord *c2)
  34. {
  35.     if(c1->contrast >  c2->contrast) return 1;
  36.     if(c1->contrast == c2->contrast) return 0;
  37.     return -1;
  38. }